package structural.proxy.dynamic;

import java.lang.reflect.Proxy;

public class Test {

    public static void main(String[] args) {
        IAthlete pRunner = new Runner();
        DynamicProxyHandler proxyHandler = new DynamicProxyHandler(pRunner);
        IAthlete pRunnerDynamic = (IAthlete) Proxy.newProxyInstance(
                IAthlete.class.getClassLoader()
                , new Class[]{IAthlete.class}
                , proxyHandler);
        //定当前目标对象使用的类加载器,获取加载器的方法是固定的
        //指定目标对象实现的接口的类型,使用泛型方式确认类型
        //指定动态处理器，执行目标对象的方法时,会触发事件处理器的方法

        pRunnerDynamic.run();
        pRunnerDynamic.stop();
    }

}
